package com.aleaho.cftrack.model;

import com.aleaho.cftrack.CFTrackApplication;
import com.baidu.trace.model.OnTraceListener;

import java.util.EmptyStackException;

/**
 * @author Aleaho
 * @version 1.0
 * @date 2017/10/28
 * @desc
 */

public class MainModelImpl implements MainModel {

    /**
     * 方法主要用于开启或关闭鹰眼服务。
     *
     * @param trackApp         提供{@link CFTrackApplication#isTraceStarted}变量，
     *                         用于判断鹰眼服务是否开启。
     * @param mOnTraceListener 开启或关闭鹰眼服务时被调用。
     */
    @Override
    public void traceManager(CFTrackApplication trackApp, OnTraceListener mOnTraceListener) {
        if (trackApp.isTraceStarted) {
            trackApp.mClient.stopTrace(trackApp.mTrace, mOnTraceListener);
        } else {
            trackApp.mClient.startTrace(trackApp.mTrace, mOnTraceListener);
        }
    }


    /**
     * 函数将在开启或关闭鹰眼的收集位置信息是被调用。
     * 此方法需在 {@link OnTraceListener#onStartGatherCallback}的回调方法中或其他的按钮回调方法中调用。
     *
     * @param trackApp         提供{@link CFTrackApplication#isGatherStarted}变量，
     *                         用于判断位置收集方法是否开启。
     * @param mOnTraceListener 开启或关闭位置收集方法时调用。
     */
    @Override
    public void gatherManager(CFTrackApplication trackApp, OnTraceListener mOnTraceListener) {

        if (trackApp.isGatherStarted) {
            trackApp.mClient.stopGather(mOnTraceListener);
        } else {
            trackApp.mClient.startGather(mOnTraceListener);
        }
    }


    /**
     * 开启鹰眼服务。
     * @param trackApp          APP的全局变量
     * @param mOnTraceListener  开启鹰眼服务的回调方法
     */
    @Override
    public void startTrace(CFTrackApplication trackApp, OnTraceListener mOnTraceListener) {
        trackApp.mClient.startTrace(trackApp.mTrace, mOnTraceListener);
    }



    /**
     * 关闭鹰眼服务。
     * @param trackApp          APP的全局变量
     * @param mOnTraceListener  关闭鹰眼服务的回调方法
     */
    @Override
    public void stopTrace(CFTrackApplication trackApp, OnTraceListener mOnTraceListener) {
        trackApp.mClient.stopTrace(trackApp.mTrace, mOnTraceListener);

    }

    /**
     * 开启位置信息采集服务。
     * @param trackApp          APP的全局变量
     * @param mOnTraceListener  开启采集服务的回调方法
     */
    @Override
    public void startGather(CFTrackApplication trackApp, OnTraceListener mOnTraceListener) {
        trackApp.mClient.startGather(mOnTraceListener);


    }


    /**
     * 关闭置信息采集服务。
     * @param trackApp          APP的全局变量
     * @param mOnTraceListener  关闭采集服务的回调方法
     */
    @Override
    public void stopGather(CFTrackApplication trackApp, OnTraceListener mOnTraceListener) {
        trackApp.mClient.stopGather(mOnTraceListener);
    }
}
